import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path'; // 引入 path 模块
import viteCompression from 'vite-plugin-compression';
import babel from 'vite-plugin-babel';
import minipic from 'vite-plugin-minipic'; // 图片优化
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    react(),
    viteCompression({
      threshold: 10240,
    }),
    babel({
      babelConfig: {
        plugins: [['styled-components-px2rem', { remUnit: 16 }]],
      },
    }),
    minipic({
      // 压缩选项（与 sharp.js 配置一致）
      sharpOptions: {
        png: {
          quality: 70,
        },
        jpeg: {
          quality: 33,
        },
        jpg: {
          quality: 70,
        },
      },
      // 图片类型转换规则
      convert: [
        { from: 'png', to: 'webp' },
        { from: 'jpg', to: 'webp' },
        { from: 'jpeg', to: 'jpg' },
      ],
      // 是否对 public 文件夹下的图片进行类型转换（v1.3+）
      convertPublic: false,
      // 是否启用缓存（默认 true）
      cache: true,
      // 排除不需要压缩的文件
      exclude: ['pic-exclude.png'],
      // 指定需要压缩的文件（与 exclude 同时存在时，include 失效）
      include: [],
      // 是否限制 gif 图片像素（v1.3.1+，默认 true）
      limitInputPixels: true,
    }),
  ],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
  },
  build: {
    rollupOptions: {
      output: {
        manualChunks(id) {
          if (id.includes('node_modules')) {
            if (id.includes('antd')) return 'vendor-antd';
            return 'vendor';
          }
        },
      },
    },
    // sourcemap: true,
  },
  server: {
    proxy: {
      '/api': {
        // 代理所有以/api开头的请求
        target: 'http://localhost:3000', // 后端服务器地址
        changeOrigin: true, // 允许跨域
        rewrite: (path) => path.replace(/^\/api/, ''), // 移除/api前缀
      },
    },
  },
});
